package com.nablasystems.suag.domain;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;

@Entity
@Table(name="alumno")
public class Alumno {
	@Id
	@Column(name="idAlumno")
	@GeneratedValue
	private int idAlumno;
	
	@Column(name="nombre", nullable=false)
	private String nombre;
	
	@Column(name="apellido", nullable=false)
	private String apellido;
	
	@Column(name="legajo", nullable=false)
	private String legajo;
	
	@ManyToOne
    @JoinColumn(name = "idCarrera")
	private Carrera carrera;

	@OneToMany(fetch = FetchType.LAZY,mappedBy="alumno",cascade= CascadeType.ALL)
	private Set<InscripcionCursado> cursosInscriptos = new HashSet<InscripcionCursado>();

	@OneToMany(mappedBy="alumno",cascade= CascadeType.ALL)
	private Set<Clases> clases = new HashSet<Clases>();
	
	public int getIdAlumno() {
		return idAlumno;
	}

	public void setIdAlumno(int idAlumno) {
		this.idAlumno = idAlumno;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	public Set<InscripcionCursado> getCursosInscriptos() {
		return cursosInscriptos;
	}

	public void setCursosInscriptos(Set<InscripcionCursado> cursosInscriptos) {
		this.cursosInscriptos = cursosInscriptos;
	}

	public String getLegajo() {
		return legajo;
	}

	public void setLegajo(String legajo) {
		this.legajo = legajo;
	}

	public Set<Clases> getClases() {
		return clases;
	}

	public void setClases(Set<Clases> clases) {
		this.clases = clases;
	}

	public Carrera getCarrera() {
		return carrera;
	}

	public void setCarrera(Carrera carrera) {
		this.carrera = carrera;
	}

	@Override
	public String toString() {
		return "Alumno [idAlumno=" + idAlumno + ", nombre=" + nombre
				+ ", apellido=" + apellido + ", legajo=" + legajo + "]";
	}
	
}
